package cc.rengu.igas.bomp.common.dao;

import cc.rengu.igas.bomp.common.entity.ProdInfo;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;

import java.util.List;

/**
 * 产品表操作接口类
 * Created by 王成 on 2020/3/2
 */
public interface ProdInfoMapper {
    /**
     * 登记产品信息
     *
     * @param prodInfo 产品信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertProdInfo(ProdInfo prodInfo) throws Exception;

    /**
     * 更新产品信息
     *
     * @param prodInfo 产品信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateProdInfoById(ProdInfo prodInfo) throws Exception;

    /**
     * 根据非业务主键查询产品信息
     *
     * @param instId 多法人标识
     * @param id     非业务主键
     * @return 产品信息
     * @throws Exception 异常
     */
    ProdInfo selectProdInfoById(String instId, String id) throws Exception;

    /**
     * 根据主键查询产品信息
     *
     * @param instId       多法人标识
     * @param prodCode     标准产品代码
     * @param baseProdCode 基础产品代码
     * @return 产品信息
     * @throws Exception 异常
     */
    ProdInfo selectProdInfoByPrimaryKey(String instId, String prodCode, String baseProdCode) throws Exception;

    /**
     * 根据标准产品查询产品信息
     *
     * @param instId   多法人标识
     * @param prodCode 标准产品代码
     * @return 产品信息
     * @throws Exception 异常
     */
    List<ProdInfo> selectProdInfoByStandardProdCode(String instId, String prodCode) throws Exception;

    /**
     * 根据法人行标识查询产品信息
     *
     * @param instId 多法人标识
     * @return 产品信息
     * @throws Exception 异常
     */
    List<ProdInfo> selectProdInfoByInstId(String instId) throws Exception;


    /**
     * 根据法人行标识查询产品信息
     *
     * @param instId 多法人标识
     * @return 产品信息
     * @throws Exception 异常
     */
    PageResult selectProdInfoByInstId(String instId, PageInfo pageInfo) throws Exception;

    /**
     * @param instId
     * @param prodCode
     * @return
     */
    List<String> selectWechatChannelIdByInstId(String instId, String prodCode) throws Exception;
}
